package top.yokey.taobaoshop;

import android.os.Bundle;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;

import top.yokey.taobaoshop.tabs.MyFragment;

public class TabActivity extends AppCompatActivity {
    //UI object
    private TextView txt_topbar;
    private TextView txt_channel;
    private TextView txt_message;
    private TextView txt_better;
    private TextView txt_setting;
    private FrameLayout ly_content;

    private LinearLayout ly_tab_bar;

    //Fragment Object
    private MyFragment fg1,fg2,fg3,fg4;
    private FragmentManager fManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tab);
        fManager=getSupportFragmentManager();
        bindViews();

        txt_channel.performClick();//模拟一次点击，既进去后选择第一项
    }

    //UI组件初始化与事件绑定
    private void  bindViews(){
        txt_topbar=findViewById(R.id.txt_topbar);
        txt_channel = (TextView) findViewById(R.id.txt_channel);
        txt_message = (TextView) findViewById(R.id.txt_message);
        txt_better = (TextView) findViewById(R.id.txt_better);
        txt_setting = (TextView) findViewById(R.id.txt_setting);
        ly_content = (FrameLayout) findViewById(R.id.ly_content);

        ly_tab_bar=findViewById(R.id.ly_tab_bar);

        txt_channel.setOnClickListener(new TabClickListener());
        txt_message.setOnClickListener(new TabClickListener());
        txt_better.setOnClickListener(new TabClickListener());
        txt_setting.setOnClickListener(new TabClickListener());
    }


    //定义一个内部类,实现View.OnClickListener接口,并重写onClick()方法
    class TabClickListener implements View.OnClickListener
    {
        @Override
        public void onClick(View v) {
            FragmentTransaction fTransaction = fManager.beginTransaction();
            hideAllFragment(fTransaction);
            switch (v.getId()){
                case R.id.txt_channel:
                    setSelected();
                    txt_channel.setSelected(true);
                    if(fg1 == null){
                        fg1 = new MyFragment("第一个Fragment");
                        fTransaction.add(R.id.ly_content,fg1);
                    }else{
                        fTransaction.show(fg1);
                    }
                    break;
                case R.id.txt_message:
                    setSelected();
                    txt_message.setSelected(true);
                    if(fg2 == null){
                        fg2 = new MyFragment("第二个Fragment");
                        fTransaction.add(R.id.ly_content,fg2);
                    }else{
                        fTransaction.show(fg2);
                    }
                    break;
                case R.id.txt_better:
                    setSelected();
                    txt_better.setSelected(true);
                    if(fg3 == null){
                        fg3 = new MyFragment("第三个Fragment");
                        fTransaction.add(R.id.ly_content,fg3);
                    }else{
                        fTransaction.show(fg3);
                    }
                    break;
                case R.id.txt_setting:
                    setSelected();
                    txt_setting.setSelected(true);
                    if(fg4 == null){
                        fg4 = new MyFragment("第四个Fragment");
                        fTransaction.add(R.id.ly_content,fg4);
                    }else{
                        fTransaction.show(fg4);
                    }
                    break;
            }
            fTransaction.commit();
        }
    }

    //重置所有文本的选中状态
    private void setSelected(){
        txt_channel.setSelected(false);
        txt_message.setSelected(false);
        txt_better.setSelected(false);
        txt_setting.setSelected(false);
    }

    //隐藏所有Fragment
    private void hideAllFragment(FragmentTransaction fragmentTransaction){
        if(fg1 != null)fragmentTransaction.hide(fg1);
        if(fg2 != null)fragmentTransaction.hide(fg2);
        if(fg3 != null)fragmentTransaction.hide(fg3);
        if(fg4 != null)fragmentTransaction.hide(fg4);
    }
}
